Das Fontdefinitions-File

In diesem File können zusätzliche Angaben gemacht werden, wo einzelne Fonts oder bestimmte Fontlibraries zu finden sind. Der vollständige Suchpfad wird im nächsten Kapitel ``Internas'' noch genau erläutert.

Das Fontdefinitions-File wird normalerweise in <#530#>TeX:config<#530#> gesucht. Man kann dieses Directory aber auch mit der Variable <#531#>TEXCONFIG<#531#> überschreiben. In dieser Variable kann man auch einen Suchpfad definieren. Der Name des Konfigurations-Files ist <#532#>showdvi.fnt<#532#>.

Nun zum Aufbau dieses Files. Hier ein Beispiel:

#math23#

#tex2html_wrap_indisplay2629##tex2html_wrap_indisplay2630#;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMnbsp;# ;SPMamp; #;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMnbsp; ;SPMamp; #;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMnbsp; ;SPMamp; #;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMnbsp; ;SPMamp; ##tex2html_wrap_indisplay2631#flibenv ;SPMamp; ;SPMamp; dir1dir2 ;SPMamp; ;SPMamp; ;directorieswithflib's#tex2html_wrap_indisplay2632#pkenv ;SPMamp; ;SPMamp; dir1dir2 ;SPMamp; ;SPMamp; ;directorieswithpk-files#tex2html_wrap_indisplay2633##tex2html_wrap_indisplay2634#basepkdir#tex2html_wrap_indisplay2635# ;SPMamp; ;SPMamp; %d /%s.%dpk ;SPMamp; ;SPMamp; ;formatstringforpk-dir's#tex2html_wrap_indisplay2636#flib#tex2html_wrap_indisplay2637# ;SPMamp; ;SPMamp; PK%04d ;SPMamp; ;SPMamp; ;formatstringforflib's#tex2html_wrap_indisplay2638#pk#tex2html_wrap_indisplay2639# ;SPMamp; ;SPMamp; %d /%s.%dpk ;SPMamp; ;SPMamp; ;formatstringforpk-files#tex2html_wrap_indisplay2640#pkdir#tex2html_wrap_indisplay2641# ;SPMamp; ;SPMamp; %s.pk ;SPMamp; ;SPMamp; ;formatstringforpk-files#tex2html_wrap_indisplay2642# ;SPMamp; ;SPMamp; ;SPMamp; ;SPMamp; ;whichareinpkdir#tex2html_wrap_indisplay2643##tex2html_wrap_indisplay2644#basepkdir ;SPMamp; ;SPMamp; hdpivdpi ;SPMamp; directory ;SPMamp; ;twoargs#tex2html_wrap_indisplay2645#flib ;SPMamp; ;SPMamp; dpi ;SPMamp; directory ;SPMamp; ;twoargs#tex2html_wrap_indisplay2646#font ;SPMamp; font ;SPMamp; dpi ;SPMamp; directory ;SPMamp; ;threeargs#tex2html_wrap_indisplay2647#pkdir ;SPMamp; ;SPMamp; hdpivdpi ;SPMamp; directory ;SPMamp; ;twoargs#tex2html_wrap_indisplay2648##tex2html_wrap_indisplay2649#basepkdir ;SPMamp; ;SPMamp; 300300 ;SPMamp; TeX:PrtFonts ;SPMamp; ;example#tex2html_wrap_indisplay2650#flib ;SPMamp; ;SPMamp; 100 ;SPMamp; ram:fastflib ;SPMamp; ;example#tex2html_wrap_indisplay2651#font ;SPMamp; cmr10 ;SPMamp; 100 ;SPMamp; ram:fastpk ;SPMamp; ;example#tex2html_wrap_indisplay2652#pkdir ;SPMamp; ;SPMamp; 109109 ;SPMamp; TeX:pk/110 ;SPMamp; ;example#tex2html_wrap_indisplay2653#pkdir ;SPMamp; ;SPMamp; 110110 ;SPMamp; TeX:pk/110 ;SPMamp; ;example#tex2html_wrap_indisplay2654#

Mit den ersten zwei Schlüsselwörtern kann man zusätzliche Directories definieren, in denen entweder nach Fontlibraries, oder nach PK-Fonts gesucht werden sollen. Von der Funktion her entsprechen diese beiden Zeilen den Environment Variablen <#534#>FLIBDIR<#534#> und <#535#>PKDIR<#535#>. Mehr dazu im Kapitel 7.1.

Die nächsten vier Zeilen definieren wie jeweis der Fontname gebildet werden soll. Als Argument wird dabei ein Format String nach C Art angegeben.

Dabei können folgende Modifier angegeben werden. <#536#>-- <#536#> ``s'' steht für den Font Namen (z.B. cmr10), ``d'' steht für die aktuelle dpi-Zahl, ``h'' steht für die dpi-Auflösung in horizontaler Richtung (entspricht ``d''), ``v'' steht für die dpi-Auflösung in vertikaler Richtung, ``x'' ist eine ältere Einheit, entspicht der horizontalen dpi mal fünf, ``y'' wie ``x'' nur für die vertikale Auflösung, ``'' steht schließ<#537#><#537#>lich für ein ``'' Zeichen.

Die ``h'' ``v'' ``x'' ``y'' Modifier sind für den Previewer nicht so sehr von Bedeutung. Sie werden vor allem für nicht quadratische Fonts (z.B. die Epson FX-80 Fonts) benötigt.

Die drei Format-Strings der obigen Tabelle sind auch gleichzeitig der jeweilige Default-Wert des Programms.

Insgesamt ist der Formatstring vollständig C-kompatibel. Beispiele hierzu:

#math24#

#tex2html_wrap_indisplay2656##tex2html_wrap_indisplay2657## ;SPMamp; #tex2html_wrap_indisplay2658#=5pt5# ;SPMamp; 6# ;SPMamp; 7# ;SPMamp; 8# ;SPMamp; 9# ;SPMamp; 10# ;SPMamp; 11# ;SPMamp; 12# ;SPMamp; 13# ;SPMamp; 14# ;SPMamp; 15# ;SPMamp; #tex2html_wrap_indisplay2659#=0pt16#17#tex2html_wrap_indisplay2660#

;SPMamp; Flib-fmt ;SPMamp; ;SPMamp; PK-fmt ;SPMamp; ;SPMamp; dpi ;SPMamp; ;SPMamp; Name ;SPMamp; ;SPMamp; Flib ;SPMamp; ;SPMamp; Font ;SPMamp; #tex2html_wrap_indisplay2661#
;SPMamp; PK%04d ;SPMamp; ;SPMamp; %d /%s.%dpk ;SPMamp; ;SPMamp; 100 ;SPMamp; ;SPMamp; cmr10 ;SPMamp; ;SPMamp; PK0100 ;SPMamp; ;SPMamp; 100/cmr10.100pk ;SPMamp; #tex2html_wrap_indisplay2662# ;SPMamp; PK%d ;SPMamp; ;SPMamp; %s.%d ;SPMamp; ;SPMamp; 83 ;SPMamp; ;SPMamp; cmbx8 ;SPMamp; ;SPMamp; PK83 ;SPMamp; ;SPMamp; cmbx8.100 ;SPMamp; #tex2html_wrap_indisplay2663# ;SPMamp; %x.lib ;SPMamp; ;SPMamp; %s/%d ;SPMamp; ;SPMamp; 360 ;SPMamp; ;SPMamp; lasy8 ;SPMamp; ;SPMamp; 1800.lib ;SPMamp; ;SPMamp; lasy/360 ;SPMamp; #tex2html_wrap_indisplay2664#

Die Zeilen, die mit ``basepkdir'' beginnen, definieren ein Directory, in dem ein gesamter Satz von zusammengeh�renden Fonts (alle Vergr��erungsstufen) zusammengefa�t sind. Mit ``<#543#>baspkdir 300 300 TeX:PrtFonts<#543#>'' definiert man also, da� alle Fonts, die auf der (quadratischen) Grundaufl�sung 300dpi basieren (z.B. auch die Magstep 1 Fonts mit 360dpi), sich in dem Directory <#544#>TeX:PrtFonts<#544#> befinden. Hat man allerdings als eingestellte Grundaufl�sung 360dpi und sucht einen Magstep 0 Font (also mit 360dpi), so wird <#545#>nicht<#545#> in diesem Directory gesucht. Bei quadratischen Fonts kann man die vertikale Aufl�sung auch weglassen.

Der erste ``basepkdir'' Eintrag zu einer bestimmten Aufl�sung hat auch noch zwei Sonderfunktionen. Zum einen wird dieses Direktory den CallMF ARexx Scripten mit �bergeben, wenn diese einen fehlenden Font generieren sollen. Zum anderen wird, falls ein Font nur �ber das ``fontvols'' File (Font-Caching) gefunden wurde, in das durch das erste passende ``basepkdir'' kopiert. Somit ist es also m�glich, die Fonts, geh�rend zu den verschiedenen Druckern/Aufl�sungen in verschiedene Directories aufzuteilen, und diese Aufteilung wird auch bei der Generation neuer Fonts, oder bei dem Kopieren von Fonts, beibehalten.

Die Fonts auf den ``fontvols'' Disketten werden im �brigen mit dem Formatstring gesucht, den der erste passende ``<#546#>basepkdir<#546#>'' Eintrag hat. Falls es keinen passenden ``<#547#>basepkdir<#547#>'' Eintrag gibt, so wird def default Formatstring f�r pk-Files genommen.

Die Zeilen mit dem Schlüsselwort ``flib'' definieren einzelne Fontlibraries und in welchen Directories sie sich befinden. Nach <#548#>flib<#548#> kommen zwei Parameter: zuerst eine Zahlenangabe für die DPI der Fontlibrary, danach das Directory, in dem die Fontlibrary zu finden ist.

Ähnlich sind die Zeilen mit dem Schlüsselwort ``font'' aufgebaut. Diesmal sind drei Parameter anzugeben. Der erste Parameter gibt den Font-Namen an, wie er in einem TEX-File definiert ist. Danach kommen die DPI-Angabe und das Directory, in welchem der Font zu finden ist. Auch hier wird nur ein einziges Object definiert (ein einziger Font).

Die Zeilen, die mit ``pkdir'' beginnen, dienen vor allem dazu, ein und den selben Fonts für verschiedene Auflösungen zu benutzen. Wird ein Font in einem dort definierten Directory gesucht, so wird der Formatstring ``pkdir_str'' verwendet. In dem Beispiel von oben würde der Font <#549#>cmr10<#549#> sowohl in der Auflösung 109 dpi als auch in 110 dpi im Directory <#550#>TeX:pk/110<#550#> unter dem Namen <#551#>cmr10.pk<#551#> gesucht werden (falls er nicht schon vorher in einer Fontlibrary oder als ``normaler'' PK-Font gefunden wurde).

Zu beachten sind auch noch zwei Feinheiten. Zum einen wird die Reihenfolge der Aufschreibung im File <#552#>innerhalb einer<#552#> Gruppe von Einträgen (z.B. alle <#553#>flib<#553#> Einträge) beim Suchen nach Fonts berücksichtigt. Man kann also z.B. mehrere Fontlibraries der selben Auflösung definieren und mit der Reihenfolge bestimmen, welche zuerst abgesucht werden soll.

Eine weitere Besonderheit ist, dass man die Format-Strings mehrfach definieren kann. Verwendet wird dann immer der zu letzt definierter String.

Ein Beispiel:

<#554#>;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMnbsp;#;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMamp;#;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMamp;#;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMamp;#;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMnbsp;;SPMnbsp; flib_str ;SPMamp;PK04hx04v ;SPMamp;;SPMamp;; wegen unsymetrischen Fonts flib ;SPMamp;120 ;SPMamp;TeX:fontlib;SPMamp;; verwende Format String von oben flib ;SPMamp;131 ;SPMamp;TeX:fontlib;SPMamp;; ebenso flib_str ;SPMamp;PK04d ;SPMamp;;SPMamp;; setzt Format-String zurück flib ;SPMamp;100 ;SPMamp;TeX:fontlib;SPMamp;; verwendet den neuen Format-String <#554#>

Die ersten zwei definierten Fontlibraries verwenden nun den Format-String mit der horizontalen und vertikalen Auflösung. Die dritte definierte Library und <#555#>alle<#555#>, die noch bei der Suche nach Fonts während des Programmlaufs definiert werden, verwenden den zweiten definierten Format-String.

Von groß<#556#><#556#>em Nutzen ist dieses Definitions-File vor allem für Benutzer mit beschränktem Plattenplatz. Man kann sich zuerst heraussuchen, welche Fonts unbedingt benötigt werden. Eine groß<#557#><#557#>e Hilfe dabei ist das Logfile, das jeden benötigten Font auflistet. Man erstellt dann für jede benötigte Auflösungsstufe eine Fontlibrary, in der die zuvor ermittelten Fonts hineingepackt werden. Diese werden auf die Festplatte kopiert. Die vollständigen Fontlibraries kann man auf Diskette halten oder, falls sie zu groß<#558#><#558#> sind, auf mehrere Disketten verteilen. Wenn man alle Libraries explizit definiert, werden die Fonts in der Reihenfolge, wie sie aufgeführt sind, im File gesucht. Zuerst also auf Platte und -- wenn dort nicht vorhanden -- auf der Diskette, die man angegeben hat.

Einzelne Fonts zu definieren kann für Besitzer von METAFONT von groß<#559#><#559#>em Nutzen sein. Möchte man zum Beispiel den Font <#560#>cmr10<#560#> neu erzeugen, so braucht man ihn nicht schon während der Testphase aus allen Fontlibraries zu löschen und neu einzutragen. Statt dessen definiert man den Font im Definitions-File. Da dieser dann zuerst gefunden wird, berücksichtigt ShowDVIden gleichnamigen Font in den Fontlibraries nicht.

Möchte man sein Fontdefinitions-File überprüfen, so sollte man ShowDVI<#561#><#561#> mit der Option <#562#>STAT<#562#> starten. Vor dem Programmende wird das Definitions-File mit Kommentaren (gebraucht/gefunden/nicht gefunden) in das Logfile geschrieben.